package com.zdp.jpa.test.entity;

import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;

/**
 * @author ZhengDp
 * @Date 2024/5/14 21:14
 */
@Data
@Entity
@Table(name = "membercardrule")
public class MemberCardRule {

    @Id
    private String id;

    private Integer num;

    private String name;

    private Integer type;

    private String remark;

    private Integer isEnabled;

    private Integer isDeleted;

    private Integer sortNum;

    private String availableDesc;

    private Integer displayStyle;

    private Integer price;

    private Integer priceGuide;

    private Integer priceDiscount;

    private Integer priceType;

    private Integer priceCnt;

    private Integer userCircleType;

    private String userCircleId;

    private Long timeCreate;

    private Long timeStart;

    private Long timeEnd;

    private Long timeUpdate;

    private String userIdUpdate;

    private String userIdCreate;

    private Integer isLimitChange;

    // JSON 字段在这里被处理为 String 类型
    private String style;

    private String activityName;

    private Integer buyType;

    private String buyTag;

    private String pageSource;

    private String params;

    public static MemberCardRule generateRandomRule() {
        MemberCardRule rule = new MemberCardRule();
        rule.setId(UUID.randomUUID().toString()); // 生成随机的 UUID 作为规则 ID
        rule.setNum(ThreadLocalRandom.current().nextInt(1000)); // 随机生成一个数字作为规则编号
        rule.setName("Rule_" + ThreadLocalRandom.current().nextInt(100)); // 设置规则名称为随机字符串
        rule.setType(generateRandomType()); // 生成随机的类型值
        rule.setRemark("Random Remark"); // 设置备注为固定值
        rule.setIsEnabled(ThreadLocalRandom.current().nextInt(2)); // 随机生成是否启用的值（假设为 0 或 1）
        rule.setIsDeleted(0); // 设置删除状态为未删除
        rule.setSortNum(ThreadLocalRandom.current().nextInt(100)); // 随机生成排序号
        rule.setAvailableDesc("Available Description"); // 设置可用描述为固定值
        rule.setDisplayStyle(1); // 设置显示风格为固定值
        rule.setPrice(ThreadLocalRandom.current().nextInt(100, 1000)); // 随机生成价格（假设价格范围为 100 到 1000）
        rule.setPriceGuide(ThreadLocalRandom.current().nextInt(100, 1000)); // 随机生成价格指导（假设价格指导范围为 100 到 1000）
        rule.setPriceDiscount(0); // 设置价格折扣为默认值
        rule.setPriceType(1); // 设置价格类型为默认值
        rule.setPriceCnt(1); // 设置价格数量为默认值
        rule.setUserCircleType(1); // 设置用户圈子类型为默认值
        rule.setUserCircleId(UUID.randomUUID().toString()); // 生成随机的 UUID 作为用户圈子 ID
        rule.setTimeCreate(System.currentTimeMillis()); // 设置创建时间为当前时间戳

        // 设置其余属性的随机值
        rule.setTimeStart(System.currentTimeMillis() + ThreadLocalRandom.current().nextLong(1000 * 3600 * 24 * 7)); // 开始时间为当前时间之后一周内的随机时间
        rule.setTimeEnd(rule.getTimeStart() + ThreadLocalRandom.current().nextLong(1000 * 3600 * 24 * 7)); // 结束时间为开始时间之后一周内的随机时间
        rule.setTimeUpdate(System.currentTimeMillis()); // 设置更新时间为当前时间戳
        rule.setUserIdUpdate(UUID.randomUUID().toString()); // 设置更新用户 ID 为随机 UUID
        rule.setUserIdCreate(UUID.randomUUID().toString()); // 设置创建用户 ID 为随机 UUID
        rule.setIsLimitChange(ThreadLocalRandom.current().nextInt(2)); // 随机生成是否限制修改的值（假设为 0 或 1）
        rule.setStyle("{\"style\": \"value\"}"); // 设置样式为 JSON 字符串
        rule.setActivityName("Random Activity"); // 设置活动名称为固定值
        rule.setBuyType(ThreadLocalRandom.current().nextInt(3)); // 随机生成购买类型（假设为 0、1、2）
        rule.setBuyTag("Random Tag"); // 设置购买标签为固定值
        rule.setPageSource("{}"); // 生成随机的页面来源
        rule.setParams("{\"param\": \"value\"}"); // 设置参数为 JSON 字符串

        return rule;
    }

    // 生成随机的 type 值
    private static int generateRandomType() {
        int[] types = {10, 20, 30, 40};
        return types[ThreadLocalRandom.current().nextInt(types.length)];
    }

    // 生成随机的页面来源
    private static String generateRandomPageSource() {
        String[] sources = {"source1", "source2", "source3"};
        return sources[ThreadLocalRandom.current().nextInt(sources.length)];
    }


}
